/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package slicktest.entities.ImmobileEntity;

import java.util.List;
import slicktest.entities.GameEntity;
import slicktest.types.DamageType;

/**
 * base interface for all things that will be non-mobile.
 * @author enrightt
 */
public interface ImmobileEntity extends GameEntity {

    //-1 for any of these means it doesn't have model that value.
    double getROF();
    double getDamage();    
    double getProjectileSpeed();
    double getSplash();
    double getBuildTime();
    double getCost();

    boolean[][] getFootprint();

    //a tower that does no damage will have an empty list of damage types.
    List<DamageType> getDamageTypes();

    boolean isBuildable();
    boolean isPassable();

    //this will be a list of things an entity can't be placed on, using the type field.
    //empty list will mean it can be put on anything, as long as it's buildable
    List<String> getRestrictions();
}
